package corejava;


public class JoinNumbers5 {
    //计算从 1 到指定数字 n 连接成字符串后的总长度(O(1))
    public static void main(String[] args) {
        long n = 999999999999L;
        // 计算数字 n 的位数。Math.log10(n) 计算以 10 为底 n 的对数，加 1 后得到 n 的位数
        long m = (long) (Math.log10(n) + 1);
        // 计算从 1 到 n 所有数字连接成一个字符串后的总长度
        // 具体计算公式为：m * (n + 1) - (Math.pow(10, m) - 1) / 9
        // 这里的 m 是 n 的位数，(Math.pow(10, m) - 1) / 9 用于修正位数计算的偏差
        long L = (long) (m * (n + 1) - (Math.pow(10, m) - 1) / 9);
        // 将计算得到的总长度输出到标准输出（通常是控制台）
        System.out.println(L);
    }

}
